【JavaScript】論理演算子 - 論理値に対する演算(論理和・論理積・否定)
JavaScriptの論理演算について解説します。
検証環境
論理演算
論理演算は“論理値に対する演算”です。
2つの論理値から1つの論理値を算出する『論理和』・『論理積』や論理値を反転する『否定』などの演算の種類があります。
論理演算子
論理演算子は“論理演算の種類を表す記号”です。
種類 | 演算子 | 内容 | 例 |
---|---|---|---|
論理和 | || |
2値の一方でも真の場合は真、それ以外は偽。 | a || b |
論理積 | && |
2値の両方が真の場合は真、それ以外は偽。 | a && b |
否定 | ! |
値が真の場合は偽、偽の場合は真。 | !a |
論理和
論理和は“2値の一方でも真の場合は真、それ以外は偽とする演算”です。
一般的には“または”を使って、“AまたはBが真の場合は真とする”と表現します。
論理和の演算パターンは次の4つです。
A | B | 論理和 |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
基本構文
左オペランド || 右オペランド
サンプル
let a_t = true;
let a_f = false;
let b_t = true;
let b_f = false;
// true / true
___ih_hl_start
let result1 = a_t || b_t;
___ih_hl_end
console.log(result1);
// true / false
___ih_hl_start
let result2 = a_t || b_f;
___ih_hl_end
console.log(result2);
// false / true
___ih_hl_start
let result3 = a_f || b_t;
___ih_hl_end
console.log(result3);
// false / false
___ih_hl_start
let result4 = a_f || b_f;
___ih_hl_end
console.log(result4);
true
true
true
false
論理積
論理積は“2値の両方が真の場合は真、それ以外は偽とする演算”です。
一般的には“かつ”を使って、“AかつBが真の場合は真とする”と表現します。
論理積の演算パターンは次の4つです。
A | B | 論理積 |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
基本構文
左オペランド && 右オペランド
サンプル
let a_t = true;
let a_f = false;
let b_t = true;
let b_f = false;
// true / true
___ih_hl_start
let result1 = a_t && b_t;
___ih_hl_end
console.log(result1);
// true / false
___ih_hl_start
let result2 = a_t && b_f;
___ih_hl_end
console.log(result2);
// false / true
___ih_hl_start
let result3 = a_f && b_t;
___ih_hl_end
console.log(result3);
// false / false
___ih_hl_start
let result4 = a_f && b_f;
___ih_hl_end
console.log(result4);
true
false
false
false
否定
否定は“値が真の場合は偽、偽の場合は真とする演算”です。
一般的に“Aが真なら偽とし、Aが偽なら真とする”と表現します。
否定の演算パターンは次の2つです。
A | 否定 |
---|---|
true | false |
false | true |
基本構文
!オペランド
サンプル
let bool1 = true;
let bool2 = false;
___ih_hl_start
let result1 = !bool1;
___ih_hl_end
console.log(result1);
___ih_hl_start
let result2 = !bool2;
___ih_hl_end
console.log(result2);
false
true
応用
論理演算子はオペランドが論理値であれば演算可能です。
そのため、比較演算子や複数の論理演算子を組み合わせて任意の演算を作成できます。
論理演算と比較演算
比較演算の結果を使った論理演算を行うことが可能です。
let x = 99;
___ih_hl_start
let result = x < 0 || 10 < x;
___ih_hl_end
console.log(result);
true
3行目のx < 0 || 10 < x
は2つの比較演算と1つの論理演算により構成されます。
x < 0
はfalse
、10 < x
はtrue
となり、その2つの論理値の論理和を||
演算子によって算出しています。
実行結果から分かるように、この式の全体的な評価はtrue
になります。
複数の論理演算
論理演算の結果を使った論理演算を行うことが可能です。
let x = 99;
let y = 'Hello';
___ih_hl_start
let result = x < 0 || 10 < x && y == 'Hello';
___ih_hl_end
console.log(result);
true
4行目はx < 0 || 10 < x
とy == 'Hello'
の演算結果の論理積を算出しています。
実行結果から分かるように、この式の全体的な評価はtrue
になります。
また、数式と同様に丸括弧(()
)で演算の優先順位を制御することができます。
let x = 99;
let y = 'Hello';
___ih_diff_start
-let result = x < 0 || 10 < x && y == 'Hello';
+let result = ( x < 0 || 10 < x ) && y == 'Hello';
___ih_diff_end
console.log(result);
true